package com.zbf.tspring.service;

import com.zbf.tspring.dao.TestDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.Map;

/**
 * @author: LCG
 * 作者: LCG
 * 日期: 2021/3/22  9:37
 * 描述: 测试不同的类中的 事务嵌套行为  使用 TestService3    测试   TestService4
 */

@Component
public class TestService4 {

      @Autowired
      private TestDao testDao;

      /**
       * @author: LCG
       * @date: 2022-09-03 12:15:17
       * @description:  注意Spring的事务默认的回滚事务的异常是 ERROR 和 runtimeException
       * 即便是rollbackFor指定的异常如下边的场景事务依然是生效的
       */
      @Transactional(propagation = Propagation.REQUIRED,rollbackFor = ArrayIndexOutOfBoundsException.class)
      public  void test41(){

          Map<String,Object> map=new HashMap<>();
          map.put("id",3);
          map.put("quantity",300);
          //更新库存
          int i = testDao.updateOrder(map);

          if(i==1){
              throw new RuntimeException("============测试都有事务的嵌套=========");
          }

      }

      

}
